package com.xbongbong.pro.rabbitmq.feign;

import com.xbongbong.paas.toolbox.wrap.XbbResponse;
import com.xbongbong.pro.message.pojo.dto.MessageRabbitMqDTO;
import com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * 工单 内部调用接口(消息用)
 * @author 魏荣杰
 * @date 2019/2/25 15:23
 * @since v1.0
 * @version v1.0
 */
@FeignClient(name = "pro-web-pc",contextId = "workOrderFeignClient")
public interface WorkOrderFeignClient {
    /**
     * Description:  工单普通消息推送（目前用于待抢单）  消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/push", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workOrderPush(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 新建工单（工单负责人创建工单执行） 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/workOrderNewExecuted", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workOrderNewExecuted(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单新建（老板创建工单给负责人） 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/workOrderNewExecutor", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workOrderNewExecutor(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 负责人接收工单 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/confirm", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> confirm(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 添加/删除协同人 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/team", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> team(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单阶段完成 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/stageComplete", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> stageComplete(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单整体完成 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/complete", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> complete(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单关闭 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/close", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> close(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单重启 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/restart", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> restart(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单转派 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/transfer", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> transfer(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单回退 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/rollback", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> rollback(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单删除 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/del", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> del(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 新增工单动态 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/dynamic", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> dynamic(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单动态编辑 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 徐斌
     * @date 2020/4/17 19:33
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/dynamicEdit", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> dynamicEdit(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单动态删除 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 徐斌
     * @date 2020/4/17 19:33
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/dynamicDel", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> dynamicDel(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 新增工单点赞 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/like", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> like(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 新增工单评价 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/comment", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> comment(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单评价@他人 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:33
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/at", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> at(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工单评价删除 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 徐斌
     * @date 2020/4/17 19:33
     */
    @RequestMapping(value = "/pro/v1/message/mq/workOrder/commentDel", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> commentDel(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);

}
